package com.isoft.student.service.impl;

import com.isoft.student.dao.MiddlejurisdictionMapper;
import com.isoft.student.dao.PersonMapper;
import com.isoft.student.eo.PersonEOPage;
import com.isoft.student.model.Person;
import com.isoft.student.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 实现业务及流程接口当中的内容
 */
@Service
public class PersonServiceImpl implements PersonService {

    @Autowired
    private PersonMapper personMapper;
    @Autowired
    private MiddlejurisdictionMapper middlejurisdictionMapper;


    /**
     * 人员信息添加方式
     * @param person 人员信息
     * @return 是否成功（-1 重复添加）
     */
    @Override
    public int AddPerson(Person person) {
        int returnInt = 0;
        //业务判断
        //（1）人员信息不能重复

        //(1)判断人员信息
        int PernameCount = personMapper.getPernameCount(person.getPername());
        //2.人员信息数据添加
        if (PernameCount<1){
        int addPersonInt = personMapper.insertPerson(person);
        //3.返回值设置
        returnInt = addPersonInt;
         }else {
            returnInt=-1;//有相同的信息名称
        }

        return returnInt;
    }

    /**
     * 人员信息更新
     * @param person 人员信息
     * @return 更新是否成功（-1：更新执行SQL报错）
     */
    @Override
    public int UpdatePerson(Person person) {
        int isUpdate=0;
        //1.没有相关业务流程的判断
        try {
            isUpdate = personMapper.updatePerson(person);
        }catch (Exception e){
                isUpdate=-1;
                //打印更新报错的情况
                System.out.print("更新信息时执行SQL报错的原因为："+e.getMessage());
            }
            return isUpdate;
        }

    /**
     * 人员信息删除
     * @param perid 人员信息
     * @return
     */
    @Override
    public int DeletePerson(int perid) {
        int delPerson = 0;
        /*1.有关业务流程的判断
         * （1）删除的信息不能与人员角色权限表有关联
         * */
        try {
            //返回的结果总数量小于1，才可以删除
            if (middlejurisdictionMapper.getPersonCount(perid) < 1) {
                delPerson = personMapper.delPerson(perid);
            }
        } catch (Exception e) {
            delPerson = -1;
            System.out.print("删除角色信息室执行SQL时报错，信息为：" + e.getMessage());
        }
        return delPerson;
    }

    @Override
    public List<PersonEOPage> getPersonWhereAll(PersonEOPage personEOPage) {
        List<PersonEOPage> listPersonEo=personMapper.getPersonWhereAll(personEOPage);
        return listPersonEo;
    }
}
